#ifndef CAR_H
#define CAR_H

#include <stdint.h>
#include <string>

#ifdef _DEBUG
#include <iostream>
#endif

class Car
{
public:
	Car() : m_name("Uninitialized") { };
	virtual ~Car() {
#ifdef _DEBUG
		std::cout << __FUNCTION__ " name: " << this->name() << std::endl;
#endif
	};

	// Qt style getter & setter
	const std::string name() const { return m_name; } 
	void setName(const std::string name) { m_name = name; }

	const std::string dotari() const { return m_dotari; }
	void setDotari(const std::string dotari) { m_dotari = dotari; }

	const std::string motorizare() const { return m_motorizare; }
	void setMotorizare(const std::string motorizare) { m_motorizare = motorizare; }

	const std::string dimensiuni() const { return m_dimensiuni; }
	void setDimensiuni(const std::string dimensiuni) { m_dimensiuni = dimensiuni; }

	const std::string culoare() const { return m_culoare; }
	void setCuloare(const std::string culoare) { m_culoare = culoare; }

	const std::string transmisie() const { return m_transmisie; }
	void setTransmisie(const std::string transmisie) { m_transmisie = transmisie; }

	virtual const std::string type() const = 0;
protected:
	std::string m_dotari;
	std::string m_motorizare;
	std::string m_dimensiuni;
	std::string m_culoare;
	std::string m_transmisie;

	std::string m_name;
};

#endif